Optimization framework for remotely executing a maintenance operation on a virtual machine

ABSTRACT

Embodiments provide a system for executing a maintenance operation on a virtual machine (VM). The system includes a host computing device including a first VM and a second VM, a maintenance application installed within the first VM, and an optimization framework providing an interface to the maintenance application. The system also includes an optimization server coupled to the maintenance application through the optimization framework. The optimization server is configured to select a maintenance operation to execute on the second VM and command the maintenance application to execute the maintenance operation on the second VM.

BACKGROUND

Software applications, such as virtual machines (VMs), may be executedby a group, or “cluster,” of host computing devices. Each VM creates anabstraction of physical computing resources, such as a processor andmemory, of the host executing the VM and executes a “guest” operatingsystem, which, in turn, executes one or more software applications. Theabstracted resources may be functionally indistinguishable from theunderlying physical resources to the guest operating system and softwareapplications.

Over time, VMs may experience degradation in performance, for example,as a result of the installation and removal of applications. Morespecifically, such performance degradation may result from increasingamounts of memory being allocated to temporary files and/or otherundesired files within the VMs, increased execution time resulting fromfragmented files within one or more virtual disks of the VMs, and/orincreased execution time resulting from invalid or obsolete entrieswithin system registries associated with operating systems installed onthe VMs. To improve the performance of such VMs, intermittent orperiodic maintenance may be performed on the VMs. Such maintenance mayinclude, for example, removing undesired files from the VM or theapplications of the VM, removing invalid or obsolete entries within anoperating system registry, defragmenting one or more disks or memoriesassociated with the VM, and/or any other suitable maintenance task oraction.

Maintenance programs typically execute maintenance tasks from within theVM undergoing maintenance (hereinafter referred to as the “target VM”).More specifically, the target VM executes the maintenance program, andthe maintenance program performs one or more maintenance tasks on orwithin the target VM. However, such an individualized approach to VMmaintenance requires a user to keep the maintenance tool updated on eachVM within a virtual infrastructure or system that may include hundredsor thousands of VMs. Moreover, an individual user may not performmaintenance tasks on target VMs with an optimal frequency. Accordingly,maintenance tasks may not be executed on an underperforming VM for anextended period of time, and the underperforming VM may also affect aperformance of other VMs.

Moreover, existing maintenance programs may perform remote maintenanceon a target VM. However, such remote maintenance often uses transmissioncontrol protocol and internet protocol (TCP/IP) and may be hindered bythe presence of security measures, such as firewalls, operating withinthe VM or the computing device hosting the VM. Circumventing suchsecurity measures to perform remote maintenance on VMs may reduce thesecurity of the VM and/or the host computing device. In addition, suchmaintenance programs may be unable to perform maintenance tasks on a VMthat is offline.

Remote maintenance of VMs within different network domains may requirean agent to be installed and executing within the VM. However, if agentsare installed within VMs, the agents may need to be periodicallyupdated, for example, with software patches or upgrades. Furthermore,existing maintenance programs may require a remote registry service toperform a registry maintenance operation on a VM executing a MicrosoftWINDOWS brand operating system. The remote registry service generallymust be executing in the VM, and the server or other device executingthe maintenance operation must have sufficient privileges to access theVM.

SUMMARY

One or more embodiments described herein provide an optimizationframework and optimization server for improving the performance of oneor more target VMs. The optimization framework provides an interfacebetween the optimization server and a maintenance application. Morespecifically, the optimization framework includes a plurality ofconcrete APIs, a plurality of interface APIs, and a framework agent thatacts as a bridge between the optimization server and the maintenanceapplication. The optimization server selects a maintenance operation tobe executed on a target VM and calls the optimization framework withinventory details of the VM. The optimization framework facilitatesgathering required data for performing the maintenance operation fromthe target VM and transmitting a maintenance command to the maintenanceapplication. The maintenance application executes the maintenanceoperation on the target VM and the results of the maintenance operationare transmitted to the optimization server. In one embodiment, a userconfigures the optimization server such that the result of themaintenance operation is transmitted to the user for user intervention.

This summary introduces a selection of concepts that are described inmore detail below. This summary is not intended to identify essentialfeatures, nor to limit in any way the scope of the claimed subjectmatter.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 is a block diagram of an exemplary computing device.

FIG. 2 is a block diagram of virtual machines that are instantiated on acomputing device, such as the computing device shown in FIG. 1.

FIG. 3 is a block diagram of an exemplary optimization system includingan optimization server and an optimization framework.

FIG. 4 is a block diagram of an exemplary optimization server that maybe used with the optimization system shown in FIG. 3.

FIGS. 5A and 5B are flowcharts of an exemplary method for optimizingvirtual machines.

FIG. 6 is a block diagram of an exemplary optimization system that maybe used to execute the method shown in FIGS. 5A and 5B.

DETAILED DESCRIPTION

Embodiments described herein provide an optimization system forimproving performance of one or more target VMs that includes anoptimization framework and an optimization server. The optimizationframework provides an interface between the optimization server and amaintenance application. More specifically, the optimization frameworkincludes a plurality of concrete APIs, a plurality of interface APIs,and a framework agent that acts as a bridge between the optimizationserver and the maintenance application. The optimization server stores aplurality of user and/or administrator configuration settings for themaintenance application. The maintenance application is installed in amaintenance VM that is separate from the target VM, and the maintenanceapplication is registered with the optimization server to enable trustedcommunication to be established between the optimization server and themaintenance application. The optimization server selects a maintenanceoperation to be executed on a target VM and calls the optimizationframework with inventory details of the VM. The optimization frameworkgathers required data for performing the maintenance operation from thetarget VM and transmits a maintenance command to the maintenanceapplication. If the target VM is offline, the optimization server mountsthe disks of the target VM to the maintenance application to enable themaintenance application to access the target VM data. The maintenanceapplication executes the maintenance operation on the target VM andresults of the maintenance operation are transmitted to the optimizationserver. In one embodiment, a user configures the optimization serversuch that a result of the maintenance operation is transmitted to theuser for user intervention.

Accordingly, the optimization server and optimization frameworkdescribed herein enable maintenance operations to be selected andexecuted on a target VM without installing maintenance agents within thetarget VM. Moreover, the maintenance operations are enabled to beexecuted on a target VM that is offline. Further, the maintenanceapplication is registered with the optimization server to provideauthentication for the maintenance operations. The optimization serverand the framework also provide a centralized infrastructure for scalingthe maintenance operations across a plurality of VMs and host computingdevices. For example, one or more maintenance applications may beinstalled within a plurality of VMs within a virtual infrastructure, andthe optimization server may initiate and control the maintenanceoperations for each of the VMs in a centralized manner. Accordingly, theoptimization server and framework described herein provide a robust,scalable, and efficient infrastructure for executing maintenanceoperations on target VMs.

In addition, the centralized optimization framework and optimizationserver enables individual VM users to be freed from VM maintenance andperformance optimization. As the maintenance application andoptimization framework are installed within one central location (i.e.,the maintenance VM), disk space is conserved within each VM whichreduces the storage and maintenance cost of a system implementing themaintenance application and the optimization framework. In addition,providing a centralized optimization server and a maintenanceapplication to perform the maintenance operations increases theefficiency of VMs within datacenters, cloud computing, virtual desktop,and/or other environments. The increased efficiency may also cause areduced failure incidence rate which also may reduce maintenance costsand increase productivity within a system implementing the optimizationserver and optimization framework.

Furthermore, because the maintenance application is installed within adedicated VM, the maintenance application may be patched and upgraded,rather than having to patch each target VM. If the maintenance operationfails, or does not complete successfully, the target VM will be restoredto a state prior to the execution of the maintenance operation, whichincreases the reliability of the optimization process.

In addition, maintenance operations may be performed using remote calls,without using or requiring the target VM's administrator privileges.Maintenance operations may also be performed on VM templates so that VMtemplates may be optimized or maintained in an optimized state.Furthermore, the optimization server, maintenance application, andoptimization framework may execute maintenance operations without usingTCP/IP based management or remote registry services. While themaintenance operations are described herein with respect to diskcleanup, disk defragmentation, and registry cleanup and defragmentationoperations, maintenance operations may also include other tasks likesoftware auditing and offline virus scanning.

FIG. 1 is a block diagram of an exemplary computing device 100.Computing device 100 includes a processor 102 for executinginstructions. In some embodiments, computer-executable instructions arestored in a memory 104 for performing one or more of the operationsdescribed herein. Memory 104 is any device allowing information, such asexecutable instructions, configuration options (e.g., threshold values),and/or other data, to be stored and retrieved. For example, memory 104may include one or more computer-readable storage media, such as one ormore random access memory (RAM) modules, flash memory modules, harddisks, solid state disks, and/or optical disks.

Computing device 100 also includes at least one presentation device 106for presenting information to a user 108. Presentation device 106 is anycomponent capable of conveying information to user 108. Presentationdevice 106 may include, without limitation, a display device (e.g., aliquid crystal display (LCD), organic light emitting diode (OLED)display, or “electronic ink” display) and/or an audio output device(e.g., a speaker or headphones). In some embodiments, presentationdevice 106 includes an output adapter, such as a video adapter and/or anaudio adapter. An output adapter is operatively coupled to processor 102and configured to be operatively coupled to an output device, such as adisplay device or an audio output device.

The computing device 100 may include a user input device 110 forreceiving input from user 108. User input device 110 may include, forexample, a keyboard, a pointing device, a mouse, a stylus, a touchsensitive panel (e.g., a touch pad or a touch screen), a gyroscope, anaccelerometer, a position detector, and/or an audio input device. Asingle component, such as a touch screen, may function as both an outputdevice of presentation device 106 and user input device 110.

Computing device 100 also includes a network communication interface112, which enables computing device 100 to communicate with a remotedevice (e.g., another computing device 100) via a communication medium,such as a wired or wireless packet network. For example, computingdevice 100 may transmit and/or receive data via network communicationinterface 112. User input device 110 and/or network communicationinterface 112 may be referred to as an input interface 114 and may beconfigured to receive information, such as configuration options (e.g.,threshold values), from a user.

Computing device 100 further includes a storage interface 116 thatenables computing device 100 to communicate with one or more datastores.In exemplary embodiments, storage interface 116 couples computing device100 to a storage area network (SAN) (e.g., a Fibre Channel network)and/or to a network-attached storage (NAS) system (e.g., via a packetnetwork). The storage interface 116 may be integrated with networkcommunication interface 112.

FIG. 2 depicts a block diagram of virtual machines 235 ₁, 235 ₂ . . .235 _(N) that are instantiated on a computing device 100, which may bereferred to as a “host.”Computing device 100 includes a hardwareplatform 205, such as an x86 architecture platform. Hardware platform205 may include processor 102, memory 104, network communicationinterface 112, user input device 110, and other input/output (I/O)devices, such as a presentation device 106 (shown in FIG. 1). Avirtualization software layer, also referred to hereinafter as ahypervisor 210, is installed on top of hardware platform 205.

The virtualization software layer supports a virtual machine executionspace 230 within which multiple virtual machines (VMs 235 ₁-235 _(N))may be concurrently instantiated and executed. Hypervisor 210 includes adevice driver layer 215, and maps physical resources of hardwareplatform 205 (e.g., processor 102, memory 104, network communicationinterface 112, and/or user input device 110) to “virtual” resources ofeach of VMs 235 ₁-235 _(N) such that each of VMs 235 ₁-235 _(N) has itsown virtual hardware platform (e.g., a corresponding one of virtualhardware platforms 240 ₁-240 _(N)). Each virtual hardware platformincludes its own emulated hardware (such as a processor 245, a memory250, a network communication interface 255, a user input device 260 andother emulated I/O devices in VM 235 ₁).

In some embodiments, memory 250 in first virtual hardware platform 240 ₁includes a virtual disk that is associated with or “mapped to” one ormore virtual disk images stored in memory 104 (e.g., a hard disk orsolid state disk) of computing device 100. The virtual disk imagerepresents a file system (e.g., a hierarchy of directories and files)used by first virtual machine 235 ₁ in a single file or in a pluralityof files, each of which includes a portion of the file system. Inaddition, or alternatively, virtual disk images may be stored in memory104 of one or more remote computing devices 100, such as in a storagearea network (SAN) configuration. In such embodiments, any quantity ofvirtual disk images may be stored by the remote computing devices 100.

Device driver layer 215 includes, for example, a communication interfacedriver 220 that interacts with network communication interface 112 toreceive and transmit data from, for example, a local area network (LAN)connected to computing device 100. Communication interface driver 220also includes a virtual bridge 225 that simulates the broadcasting ofdata packets in a physical network received from one communicationinterface (e.g., network communication interface 112) to othercommunication interfaces (e.g., the virtual communication interfaces ofVMs 235 ₁-235 _(N)). Each virtual communication interface may beassigned a unique virtual Media Access Control (MAC) address thatenables virtual bridge 225 to simulate the forwarding of incoming datapackets from network communication interface 112. In an embodiment,network communication interface 112 is an Ethernet adapter that isconfigured in “promiscuous mode” such that all Ethernet packets that itreceives (rather than just Ethernet packets addressed to its ownphysical MAC address) are passed to virtual bridge 225, which, in turn,is able to further forward the Ethernet packets to VMs 235 ₁-235 _(N).This configuration enables an Ethernet packet that has a virtual MACaddress as its destination address to properly reach the VM in computingdevice 100 with a virtual communication interface that corresponds tosuch virtual MAC address.

Virtual hardware platform 240 ₁ may function as an equivalent of astandard x86 hardware architecture such that any x86-compatible desktopoperating system (e.g., Microsoft WINDOWS brand operating system, LINUXbrand operating system, SOLARIS brand operating system, NETWARE, orFREEBSD) may be installed as guest operating system (OS) 265 in order toexecute applications 270 for an instantiated VM, such as first VM 235 ₁.Virtual hardware platforms 240 ₁-240 _(N) may be considered to be partof virtual machine monitors (VMM) 275 ₁-275 _(N) which implement virtualsystem support to coordinate operations between hypervisor 210 andcorresponding VMs 235 ₁-235 _(N). Those with ordinary skill in the artwill recognize that the various terms, layers, and categorizations usedto describe the virtualization components in FIG. 2 may be referred todifferently without departing from their functionality or the spirit orscope of the disclosure. For example, virtual hardware platforms 240₁-240 _(N) may also be considered to be separate from VMMs 275 ₁-275_(N), and VMMs 275 ₁-275 _(N) may be considered to be separate fromhypervisor 210. One example of hypervisor 210 that may be used in anembodiment of the disclosure is included as a component in VMware's ESXbrand software, which is commercially available from VMware, Inc.

FIG. 3 is a block diagram of an exemplary optimization system 300 thatmay be used to optimize one or more applications or machines, such asone or more VMs 235 ₁-235 _(N) (shown in FIG. 2). In an embodiment,system 300 includes an optimization server 302, an optimizationframework 304, a maintenance application 306, a plurality of systemapplication programming interfaces (APIs) 308, and one or more targetVMs 310 ₁-310 _(N). In an embodiment, system 300 is embodied within oneor more computing devices 100 (shown in FIG. 1). More specifically, oneor more components of system 300, such as optimization server 302,optimization framework 304, maintenance application 306, system APIs308, and/or target VMs 310 ₁-310 _(N) may be embodied in a plurality ofcomputer-executable instructions stored within a computer readablemedium, such as memory 104 and/or memory 250 (shown in FIG. 2), and maybe executed by a processor, such as processor 102 and/or processor 245(shown in FIG. 2), when the processor is programmed with thecomputer-executable instructions.

In an embodiment, optimization server 302 is a physical server, such ascomputing device 100, that controls system 300 (shown in FIG. 3) and/orinitiates maintenance operations within system 300. For example,optimization server 302 may be used to manage or control maintenanceapplications 306, and may “trigger” maintenance applications 306, orcause maintenance applications 306 to perform maintenance operations onone or more target VMs 310 ₁-310 _(N). Alternatively, optimizationserver 302 may be a virtual server that may be implemented by one ormore VMs 235 ₁-235 _(N) executing on a host, such as a computing device100. For example, in one embodiment, optimization server 302 may beimplemented as a plug-in to VI Client that operates with VC Server, bothof which are available from VMware, Inc. In an embodiment, optimizationserver 302 is positioned remotely from target VMs 310 ₁-310 _(N) suchthat optimization server 302 is separate from a computing device 100 orother device that hosts target VMs 310 ₁-310 _(N). Alternatively,optimization server 302 may be positioned, or executed, within a targetVM 310 ₁. Moreover, optimization server 302 is coupled to one or moremaintenance applications 306 (and/or to the VMs 235 ₁-235 _(N) executingmaintenance applications 306) through optimization framework 304.

Optimization framework 304 includes a set of programming functions,classes, objects, and/or other programming components that enableoptimization server 302 to interface with one or more maintenanceapplications 306. More specifically, optimization framework 304 enablesoptimization server 302 to execute maintenance operations on target VMs310 ₁-310 _(N) and enables maintenance application 306 to receivecommands and/or data from optimization server 302 and transmit data tooptimization server 302. In an embodiment, optimization framework 304includes a framework agent 312 and a plurality of framework APIs 314,such as a plurality of concrete, or instantiatable, APIs 316 and aplurality of interface APIs 318. At least a portion of the frameworkAPIs 314 are implemented by the maintenance application 306 to enablethe optimization server 302 to transmit maintenance operations tomaintenance application 306 through optimization framework 304. In someembodiments, optimization framework 304 is provided to third partydevelopers for use in developing maintenance application 306. In suchembodiments, maintenance application 306 incorporates or implementsaspects of optimization framework 304 and expects optimization framework304 to be executing within a VM 235 ₁ in which maintenance application306 is executing. In some embodiments, optimization framework 304 isshipped with maintenance application 306 such that a user may installoptimization framework 304 along with maintenance application 306.

Framework agent 312 operates as a bridge between maintenance application306 and optimization server 302. For example, framework agent 312 mayestablish a data connection with optimization server 302 (i.e., betweenmaintenance application 306 and optimization server 302) and monitor theconnection to determine if optimization server 302 is requesting orcommanding a maintenance operation to be executed on a target VM 310 ₁.If framework agent 312 detects or receives a request or command toexecute a maintenance operation (hereinafter referred to as a“maintenance command”) on a target VM 310 ₁, framework agent 312requests and obtains, from target VM 310 ₁, information or dataassociated with the target VM 310 ₁, for example, using one or moresystem APIs 308. Such information or data associated with target VM 310₁ may include, for example, inventory data of the target VM 310 ₁, suchas the number and/or size of one or more disks 320 ₁-320 _(N) associatedwith target VM 310 ₁, the type and/or version of the operating systemexecuting on target VM 310 ₁, the contents of a file allocation table(FAT), the operating system registry contents, information required tomount one or more disks 320 ₁-320 _(N), and/or any other suitableinformation or data associated with the target VM 310 ₁.

Framework agent 312 transmits the maintenance command to a maintenanceapplication 306 by calling an associated framework API 314. Themaintenance command transmitted to the maintenance application 306includes the maintenance operation (e.g., disk defragmentation, diskcleanup, or registry cleanup) to be executed on the target VM 310 ₁,inventory data of the target VM 310 ₁, and user and/or administratorconfiguration settings. After the maintenance operation has completed,framework agent 312 transmits data representative of the maintenanceoperation results to optimization server 302 (and then to a user foruser intervention) if optimization server 302 has been configuredaccordingly. For example, the maintenance results may include a summaryor report based on an analysis of the target VM 310 ₁ (hereinafterreferred to as an “analysis report”) and one or more recommendedoperations or actions (hereinafter referred to as “recommended actions”)to perform on the target VM 310 ₁ based on the results of the analysis.If optimization server 302 has not been configured to request userintervention after the maintenance operation has completed, themaintenance operation results are automatically implemented, such as byimplementing the recommended actions on or within the target VM 310 ₁.

In an embodiment, concrete APIs 316 are APIs that may be instantiatedand/or called, for example, by maintenance application 306 to interfacewith components of optimization framework 304 and/or optimization server302. In an embodiment, one function call that may be used to implementand/or access concrete APIs 316 is: void StartVMOFAgent (String), whichmay be used by a maintenance application 306 to initiate or startframework agent 312. Another function call that may be used to implementand/or access concrete APIs 316 is: void Connect (VMOPSHostName,VMOPSPort, RegistrationKey), which may be used by framework agent 312 toestablish a connection with optimization server 302 and to enableframework agent 312 to receive maintenance commands from optimizationserver 302. Still another function call that may be used to implementand/or access concrete APIs 316 is: void Disconnect (RegistrationKey),which may be used to disconnect framework agent 312 from optimizationserver 302. In some embodiments, StartVMOFAgent may be referred to asStartOptimizationFrameworkAgent or StartFrameworkAgent. In addition,VMOPSHostName may be referred to as OptimizationServerHostName orOptimizationServerName, and VMOPSPort may be referred to asOptimizationServerPort.

In an embodiment, interface APIs 318 are APIs that are implemented bymaintenance application 306 and that are called by framework agent 312.More specifically, interface APIs 318 are called by optimization server302, through framework agent 312, to initiate, monitor, and/or receivethe results of one or more maintenance operations. In one embodiment, anadministrator or a user may configure maintenance application 306 totransmit the results of a maintenance operation to optimization server302 before terminating the maintenance operation. For example, theadministrator or user may desire to view the analysis report beforeimplementing the recommended actions, and/or the administrator or usermay desire to perform manual or user-selected actions based on theanalysis report. In such an embodiment, a function call that may be usedto receive the results of a maintenance operation, such as a diskcleanup operation, performed on an online target VM 310 ₁ is:DiskCleanupResult AnalyzeDiskForCleanup (FAT[ ], Configuration,Registry). Another function call that may be used to receive the resultsof a maintenance operation, such as a registry cleanup operation,performed on an online target VM 310 ₁ is: RegistryCleanupResultAnalyzeRegistryForCleanup (FAT[ ], Configuration, Registry). As usedherein, the term “online” refers to a state that is a virtualrepresentation of a powered-on device, and the term “offline” refers toa state that is a virtual representation of a powered-off device.

If the target VM 310 ₁ is offline, a function call that may be used toreceive the results of a maintenance operation, such as a disk cleanupoperation, is: DiskCleanupResult AnalyzeDiskForCleanup(MountedDriveNames as String [ ], Configuration). Another function callthat may be used to receive the results of a maintenance operation, suchas a registry cleanup operation, is: RegistryCleanupResultAnalyzeRegistryForCleanup (MountedDriveNames as String [ ],Configuration).

In another embodiment, for one or more target VMs 310 ₁-310 _(N), anadministrator or a user may configure maintenance application 306 tocomplete the maintenance operation without prompting the administratoror the user to input a command (i.e., without user intervention) afterreceiving the results of the maintenance operation. In such anembodiment, a function call that may be used to receive the results of amaintenance operation, such as a disk cleanup operation, is:DiskCleanupResult CleanupDisk (FAT[ ], Configuration, Registry). Anotherfunction call that may be used to receive the results of a maintenanceoperation, such as a registry cleanup operation, is:RegistryCleanupResult CleanupRegistry (FAT[ ], Configuration, Registry).

If the target VM 310 ₁ is offline, a function call that may be used toreceive the results of a maintenance operation, such as a disk cleanupoperation, is: DiskCleanupResult CleanupDisk (MountedDriveNames asString [ ], Configuration). Another function call that may be used toreceive the results of a maintenance operation, such as a registrycleanup operation, is: RegistryCleanupResult CleanupRegistry(MountedDriveNames as String [ ], Configuration).

In one embodiment, a function call that may be used regardless ofwhether the target VM 310 ₁ is online or offline and that may notrequire user intervention during the maintenance operation or after themaintenance operation has completed is: DefragmentationResultDefragmentDisk (DriveNames as String[ ], Configuration).

In an embodiment, maintenance application 306 is a software tool orutility that executes or performs one or more maintenance operations ona component, such as on one or more disks 320 ₁-320 _(N) of a target VM310 ₁. For example, maintenance application 306 may execute maintenanceoperations including, for example, a disk cleanup operation on disk 320₁ to remove undesired files and/or a disk defragmentation operation todefragment or optimize a placement of files within disk 320 ₁.Maintenance application 306 may additionally or alternatively execute amaintenance operation including a registry cleanup operation on disk 320₁ to remove undesired operating system registry files or entries, tomodify one or more registry settings to improve a performance and/or astartup time of target VM 310 ₁, and/or any other operation to improve aperformance or operation of a target VM 310 ₁. In some embodiments,maintenance application 306 may execute a maintenance operationincluding a virus scan and cleanup (for online or offline target VMs 310₁-310 ₁₀, software auditing for target VMs 310 ₁-310 _(N), and/or mayexecute an above-mentioned maintenance operation on a template of a VM235 ₁ to optimize the template.

System APIs 308 are a plurality of APIs provided by an application suiteor operating system that is common to target VMs 310 ₁-310 _(N),maintenance application 306, optimization framework 304, and/oroptimization server 302. In one embodiment, system APIs 308 are embodiedwithin a virtualized platform, such as vSphere, which is available fromVMware, Inc. In some embodiments, system APIs 308 include vSphere 5.0APIs and VM Tools, which are available from VMware, Inc. System APIs 308may also include offline registry access APIs from an operating systemmanufacturer, such as Microsoft, Inc. for target VMs 310 ₁-310 _(N)executing a Microsoft Windows brand operating system. In someembodiments, using offline registry access APIs may introduce securityconcerns with respect to target VM 310 ₁, maintenance application 306,and/or optimization server 302. For example, the offline registry accessAPIs may cause registry settings and/or other private data of target VM310 ₁ to be transferred from target VM 310 ₁ to another application,such as maintenance application 306. However, such security concerns maybe reduced or alleviated by the registration process and theindividualized and customizable configuration of maintenance application306 as described herein.

Target VMs 310 ₁-310 _(N) are VMs 235 ₁-235 _(N) executing on one ormore computing devices 100. More specifically, each target VM 310 ₁-310_(N) executes on a hypervisor 210 of one or more computing devices 100.Each target VM 310 ₁-310 _(N) includes at least one disk 320 ₁-320 _(N).In an embodiment, disk 320 ₁ is embodied as a virtual disk image or file(hereinafter referred to as a “disk file”) stored within a memory, suchas memory 104 (shown in FIG. 2). In an embodiment, if a target VM 310 ₁is offline, framework agent 312 mounts the disk 320 ₁ of the target VM310 ₁ to enable access to the files or other data stored in disk 320 ₁.Framework agent 312 then invokes the maintenance operation ofmaintenance application 306. In such an embodiment, maintenanceapplication 306 executes the maintenance operation by accessing datafrom the mounted disk 320 ₁.

Moreover, in an embodiment, optimization server 302, optimizationframework 304, and maintenance application 306 do not install anysoftware components within target VM 310 ₁ to execute the maintenanceoperation on the target VM 310 ₁. For example, components ofoptimization framework 304, such as framework agent 312 and frameworkAPIs 314, are exclusively installed within maintenance application 306and/or within a VM 235 ₁ executing the maintenance application 306.Accordingly, optimization server 302, optimization framework 304, andmaintenance application 306 may access data on the disk 320 ₁ of thetarget VM 310 ₁ directly (and thereby execute the maintenance operationon the disk 320 ₁ and/or target VM 310 ₁), without requiring the use ofan intermediary maintenance agent or maintenance application installedwithin the target VM 310 ₁.

FIG. 4 is a block diagram of an exemplary optimization server 302. In anembodiment, optimization server 302 includes a manager module 400 thatmanages or controls the operation of optimization server 302.Optimization server 302 also includes an administrator policy module402, an administrator configuration module 404, a user configurationmodule 406, a disk mounting module 408, and a database 410 that are eachcommunicatively coupled to manager module 400. In an embodiment, eachmodule of optimization server 302 is a program module that is stored ina computer readable media, such as memory 104 or memory 250, ofoptimization server 302 as a plurality of computer-executableinstructions that are executed by a processor, such as processor 102 orprocessor 245. Moreover, database 410 is stored within the memory ofoptimization server 302 or within another system, such as a databaseserver.

Manager module 400 controls the operation of optimization server 302,and directs or commands optimization server 302 to perform the functionsdescribed herein. For example, manager module 400 selects a maintenanceapplication 306, and a maintenance operation associated with themaintenance application 306 to execute on a target VM 310 ₁ (shown inFIG. 3). When the maintenance operation has been selected, managermodule 400 transmits a maintenance command to framework agent 312, whichin turn calls or invokes maintenance application 306 (both shown in FIG.3) to cause the maintenance operation to be executed on the target VM310 ₁. The maintenance command may include user configuration settings,administrator configuration settings, and at least a portion of dataassociated with the target VM 310 ₁, as described more fully herein.Manager module 400 also determines whether the target VM 310 ₁ isoffline, and mounts each disk 320 ₁-320 _(N) of the target VM 310 ₁ tothe maintenance application 306, using disk mounting module 408, if thetarget VM 310 ₁ is offline. Moreover, manager module 400 registers themaintenance application 306 with optimization server 302 to enable themaintenance application 306 to establish a trusted communication withoptimization server 302. As used herein, the term “trustedcommunication” refers to communication between a first device and asecond device where the first device has been authenticated with thesecond device to verify an identity of the first device. Suchcommunication may also include encryption or other security measures toenhance the security of the trusted communication.

Administrator policy module 402 may be used to determine or select aplurality of policies or rules for optimization server 302 and/or foroptimization system 300 (shown in FIG. 3) to control the operationthereof. For example, administrator policy module 402 may determine afrequency of maintenance operations to be performed for each target VM310 ₁-310 _(N), and/or may identify target VMs 310 ₁-310 _(N) thatshould be excluded from a maintenance operation.

Administrator configuration module 404 enables optimization server 302to configure settings of maintenance application 306. In someembodiments, administrator configuration module 404 enables settings ofmaintenance application 306 to be customized at one or more levels of avirtual infrastructure, such as one or more levels of a virtualinfrastructure tree identified or displayed in VI Client, which isavailable from VMware, Inc. An administrator may use user input device110 (shown in FIG. 1), or another suitable input device, to enter intoadministrator configuration module 404 and/or to cause optimizationserver 302 to generate (or update) a plurality of configuration settings(hereinafter referred to as “administrator configuration settings”) fora maintenance application 306 (shown in FIG. 3). In an embodiment,administrator configuration settings are identified or selected for amaintenance application 306 and are used to configure maintenanceoperations performed on each target VM 310 ₁-310 _(N) accessed bymaintenance application 306. Such administrator configuration settingsare stored in a configuration file (which is stored in database 410) andare transmitted to maintenance application 306 in preparation forexecuting one or more maintenance operations. In one embodiment, theadministrator configuration settings are stored as one or moreextensible markup language (XML) files to facilitate propagating theadministrator configuration settings to maintenance applications 306using framework agent 312.

User configuration module 406 enables optimization server 302 toconfigure settings of maintenance application 306 with respect to asingle target VM 310 ₁. For example, a user may use user input device110, or another suitable input device, to enter into user configurationmodule 406, or to cause optimization server 302 to generate a pluralityof configuration settings or to update existing configuration settings.Such configuration settings (hereinafter referred to as “userconfiguration settings”) may be used to determine a specificconfiguration of a maintenance application 306 and/or may be applied toa maintenance operation to be executed on a target VM 310 ₁. Moreover,the user configuration settings may override one or more administrativesettings described above with respect to a target VM 310 ₁.Additionally, a user may exclude a target VM 310 ₁ from having amaintenance operation executed on the target VM 310 ₁ by setting apredetermined user configuration setting. In an embodiment, the userconfiguration settings are stored as one or more XML files withindatabase 410.

In some embodiments, an XML configuration file used for a diskdefragmentation maintenance operation may include:

<ToolConfiguration name=”DiskDefragmenter”>    <Configuration id=”1”name=”Compact Free Spaces”/>    <Configuration id=”2” name=”Defrag andOptimize Disk”/>    .... </ ToolConfiguration >

In addition, in some embodiments, an XML configuration file used for adisk cleanup maintenance operation may include:

<ToolConfiguration name=”DiskCleanUp”> <Configuration id=”1” name=”CleanZero Length Files”/> <Configuration id=”2” name=”Ignore System Files”/>.... <IncludeFiles>    <FilePattern>*.tmp</FilePattern>   <FilePattern>*.swp</FilePattern>    .... </IncludeFiles><ExcludeFiles>    <FilePattern>*.dat</FilePattern>    ....</ExcludeFiles> </ToolConfiguration>

Disk mounting module 408 is used to mount one or more disks 320 ₁-320_(N) and/or disk files of a target VM 310 ₁ to a VM 235 ₁ (shown in FIG.2) that is executing maintenance application 306. Database 410 storesdata associated with system 300 to facilitate executing one or moremaintenance operations. For example, database 410 may store inventorydata or other data associated with target VMs 310 ₁-310 _(N), such as anumber of target VMs 310 ₁-310 _(N) executing on a computing device 100and/or within a hypervisor 210 (shown in FIG. 2), data regarding one ormore datastores coupled to target VMs 310 ₁-310 _(N), results ofmaintenance operations, and/or information required to mount one or moredisks 320 ₁-320 _(N). In addition, database 410 may store a list ofmaintenance applications 306 that have been registered with optimizationserver 302, data regarding a maintenance application 306 that iscurrently executing a maintenance operation selected by optimizationserver 302, a list of target VMs 310 ₁-310 _(N) to be excluded from amaintenance operation, a plurality of user configuration settings foreach target VM 310 ₁-310 _(N), a plurality of administratorconfiguration settings for maintenance application 306, a history ofmaintenance operations that have been executed on each target VM 310₁-310 _(N), and/or any other suitable data that enables optimizationserver 302 to function as described herein.

FIGS. 5A and 5B are flowcharts of an exemplary method 500 for optimizingvirtual machines, such as VMs 235 ₁-235 _(N) (shown in FIG. 2). FIG. 6is an exemplary optimization system 600 that may be used to executemethod 500. Unless otherwise specified, optimization system 600 issubstantially similar to optimization system 300 (shown in FIG. 3), andsimilar components are labeled in FIG. 6 with the same referencenumerals used in FIG. 3. It should be recognized that the steps ofmethod 500 may be manually initiated by a user or an administrator, ormay be automatically initiated by an optimization server 302 withinoptimization system 600 and/or within optimization system 300.

As illustrated in FIG. 6, for example, a host computing device 100includes a plurality of VMs 235 ₁-235 _(N), such as a first, ormaintenance VM 602, and a second, or target VM 310 ₁. Any number ofadditional target VMs 310 ₂-310 _(N) may also be included within a hostcomputing device 100. In an embodiment, a maintenance application 306 isinstalled within the maintenance VM 602. Maintenance VM 602 and targetVMs 310 ₁-310 _(N) are installed or instantiated within hypervisor 210of computing device 100. Moreover, computing device 100 includes anoptimization framework 304 that includes a framework agent 312 and aplurality of framework APIs 314 (shown in FIG. 3) that are installed aspart of maintenance application 306 and/or maintenance VM 602.Optimization framework 304 provides an interface to the maintenanceapplication 306. In an embodiment, one or more disks 320 ₁-320 _(N) oftarget VMs 310 ₁-310 _(N) and/or of maintenance VM 602 are located orstored within at least one datastore (not shown) of optimization system600. In some embodiments, a separate maintenance application 306 ormaintenance VM 602 is installed for each datastore in optimizationsystem 600 to facilitate accessing data within each datastore during theexecution of a maintenance operation on an associated target VM 310₁-310 _(N). Alternatively, a single maintenance application 306 ormaintenance VM 602, or any number of maintenance applications 306 ormaintenance VMs 602, are installed within optimization system 600 toexecute one or more maintenance operations on one or more target VMs 310₁-310 _(N).

An optimization server 302 is coupled to the maintenance application 306through the optimization framework 304 (e.g., through framework agent312) for accessing the maintenance application 306. In addition, theoptimization server 302 registers the maintenance application 306 asdescribed herein. The optimization server 302 is configured to select amaintenance operation to execute on the target VM 310 ₁, command themaintenance application 306 to execute the maintenance operation on thetarget VM 310 ₁, and receive the results of the maintenance operation.It should be recognized, as illustrated in FIG. 6, that optimizationserver 302 may be coupled to a plurality of computing devices 100 and/ormaintenance applications 306 installed within maintenance VMs 602 of thecomputing devices 100. Accordingly, optimization server 302 may cause aplurality of maintenance operations to be executed on a plurality oftarget VMs 310 ₁-310 _(N) executing on one or more computing devices100.

In an embodiment, method 500 is at least partially executed by one ormore computing devices 100 (shown in FIG. 1) and/or one or more VMs 235₁-235 _(N). For example, a plurality of computer-executable instructionsis embodied within a computer-readable medium, such as memory 104 ormemory 250. The instructions, when executed by a processor, such asprocessor 102 or processor 245, cause the processor to execute the stepsof method 500 and/or to function as described herein. While method 500is described with respect to one maintenance application 306 and targetVM 310 ₁, it should be recognized that method 500 may be used with aplurality of maintenance applications 306 and/or target VMs 310 ₁-310_(N) in a similar manner as described herein.

As shown in FIG. 5A, configuration settings are generated 502 for one ormore maintenance applications 306. More specifically, an administratorinitially uses, or configures, maintenance application 306 to generate aplurality of administrator configuration settings for maintenanceapplication 306. An XML file (i.e., administrator configuration file ortemplate) is generated by maintenance application 306 and is stored inoptimization server 302 (e.g., within database 410). In someembodiments, generating 502 the initial administrator configurationsettings is a one-time manual operation performed by the administrator.In an embodiment, the maintenance application 306 is installed within adedicated maintenance VM 602 that is separate from target VMs 310 ₁-310_(N).

One or more maintenance applications 306 are registered 504 withoptimization server 302. In an embodiment, the administrator selects amaintenance application 306 and registers 504 the maintenanceapplication 306 with optimization server 302 by associating, withoptimization server 302, a name of the maintenance application 306, adescription of the maintenance application 306, a list of maintenanceoperations that maintenance application 306 is able to execute, and oneor more configuration files associated with maintenance application 306.In an embodiment, upon registration of the maintenance application 306,optimization server 302 generates a registration key for the maintenanceapplication 306 that enables the maintenance application 306 toestablish a trusted or authenticated communication with optimizationserver 302 for performing or executing maintenance operations. Theregistration key is stored 506 in a predetermined location within themaintenance application 306 (i.e., within the maintenance VM 602), foruse by maintenance application 306 in establishing a trustedcommunication with optimization server 302. In an embodiment, afterregistering 504 a maintenance application 306, an administrator mayinput administrator configuration settings into optimization server 302using administrator configuration module 404 and a user may input userconfiguration settings into optimization server 302 using userconfiguration module 406 (both shown in FIG. 4) to customize theconfiguration settings generated 502 for the maintenance application306.

As shown in FIG. 5B, optimization server 302 selects 508, without userintervention, a maintenance application 306 to call, a target VM 310 ₁,and a maintenance operation to execute on the target VM 310 ₁ based onpredetermined administrator policies. Alternatively, the user oradministrator, using optimization server 302, selects 508 a maintenanceapplication 306 (e.g., from a list of registered maintenanceapplications 306), a target VM 310 ₁, and a maintenance operation toexecute on the target VM 310 ₁. A profile, or “snapshot,” of the targetVM 310 ₁ is taken and/or stored 510 by optimization server 302 beforethe maintenance operation is executed, for example, using one or more VCServer brand tools which are available from VMware, Inc.

Optimization server 302 determines 512 whether the target VM 310 ₁ isoffline. If the target VM 310 ₁ is offline, the disk 320 ₁ or disks 320₁-320 _(N) of the target VM 310 ₁ are mounted 514 to the maintenanceapplication 306, i.e., to the maintenance VM 602. Optimization server302 then instructs or commands the maintenance application 306 toexecute the maintenance operation. More specifically, optimizationserver 302 transmits 516 a command (i.e., a maintenance command) toexecute the maintenance operation to the framework agent 312. Themaintenance command includes configuration data from the userconfiguration file and/or the administrator configuration file.

More specifically, in an embodiment, optimization server 302 determineswhether user configuration settings exist for the target VM 310 ₁. Ifuser configuration settings exist, optimization server 302 includes theuser configuration settings in the maintenance command transmitted tomaintenance application 306. However, if no user configuration settingsexist for target VM 310 ₁, optimization server 302 determines if userconfiguration settings exist for any “ancestors” of the target VM 310 ₁(i.e., any machines or devices at a higher infrastructure level thantarget VM 310 ₁ and that have configuration settings or other settingsor data inherited by the target VM 310 ₁). If an ancestor of the targetVM 310 ₁ includes user configuration settings, these settings are usedfor the target VM 310 ₁ and are included within the maintenance commandtransmitted to maintenance application 306. If no user configurationsettings exist for the target VM 310 ₁ or an ancestor of the target VM310 ₁, the administrator configuration settings for maintenanceapplication 306 are used and included within the maintenance command.

In an embodiment, a component of optimization framework 304, such asframework agent 312, is used to execute 518 the maintenance operation onthe target VM 310 ₁, for example, by calling a function identified in aninterface API 318 (shown in FIG. 3) that is implemented by themaintenance application 306 using the data contained in the maintenancecommand. In an embodiment, if target VM 310 ₁ is offline, themaintenance application 306 executes 518 the maintenance operation byreceiving the data from the disk 320 ₁ of target VM 310 ₁ and analyzingor cleaning the data received. If the target VM 310 ₁ is online, themaintenance application 306 executes 518 the maintenance operation inthe target VM 310 ₁ and/or disk 320 ₁ based on the type of themaintenance operation.

Framework agent 312 determines 520 whether user intervention isrequested, for example, by analyzing the maintenance command and/orconfiguration settings received from optimization server 302. If userintervention is requested, the maintenance results (e.g., the analysisreport and/or the recommended actions) are transmitted or displayed tothe user, and the user selects one or more actions to implement based onthe maintenance results. In one embodiment, a component of theoptimization framework 304, such as framework agent 312, is used totransmit the maintenance results from maintenance application 306 tooptimization server 302, and optimization server 302 transmits ordisplays the results to the user.

After the user selects the actions to be performed, maintenanceapplication 306 implements 522 the user selected actions. If, however,user intervention is not requested, maintenance application 306automatically implements 524 the recommended actions and/or actionsidentified by maintenance application 306. Framework agent 312 thendetermines 526 whether the maintenance operation completed successfully(e.g., whether the actions were implemented successfully), for example,by analyzing a termination or completion message of the maintenanceoperation generated by the maintenance application 306. If themaintenance operation completed successfully, optimization server 302may execute other maintenance operations on the same target VM 310 ₁and/or on other target VMs 310 ₂-310 _(N) by returning to selecting 508a maintenance application 306 to call, a target VM 310 ₁, and amaintenance operation to execute on the target VM 310 ₁. However, if themaintenance operation did not complete successfully, the target VM 310 ₁and/or the disk 320 ₁ of the target VM 310 ₁ may be restored 528, fromthe stored profile or snapshot, to a state of the target VM 310 ₁ and/ordisk 320 ₁ before the maintenance operation was executed. In someembodiments, the target VM 310 ₁ is restored 528 using one or moresoftware tools or applications within VC server, which is available fromVMware, Inc.

Exemplary Operating Environment

The optimization system as described herein may be performed by acomputer or computing device. A computer or computing device may includeone or more processors or processing units, system memory, and some formof computer-readable media. Exemplary computer-readable media includeflash memory drives, digital versatile discs (DVDs), compact discs(CDs), floppy disks, and tape cassettes. By way of example and notlimitation, computer-readable media comprise computer storage media andcommunication media. Computer storage media store information such ascomputer-readable instructions, data structures, program modules, orother data. Communication media typically embody computer-readableinstructions, data structures, program modules, or other data in amodulated data signal such as a carrier wave or other transportmechanism and include any information delivery media. Combinations ofany of the above are also included within the scope of computer-readablemedia.

Although described in connection with an exemplary computing systemenvironment, embodiments of the disclosure are operative with numerousother general purpose or special purpose computing system environmentsor configurations. Examples of well known computing systems,environments, and/or configurations that may be suitable for use withaspects of the disclosure include, but are not limited to, mobilecomputing devices, personal computers, server computers, hand-held orlaptop devices, multiprocessor systems, gaming consoles,microprocessor-based systems, set top boxes, programmable consumerelectronics, mobile telephones, network PCs, minicomputers, mainframecomputers, distributed computing environments that include any of theabove systems or devices, and the like.

Embodiments of the disclosure may be described in the general context ofcomputer-executable instructions, such as program modules, executed byone or more computers or other devices. The computer-executableinstructions may be organized into one or more computer-executablecomponents or modules. Generally, program modules include, but are notlimited to, routines, programs, objects, components, and data structuresthat perform particular tasks or implement particular abstract datatypes. Aspects of the disclosure may be implemented with any number andorganization of such components or modules. For example, aspects of thedisclosure are not limited to the specific computer-executableinstructions or the specific components or modules illustrated in thefigures and described herein. Other embodiments of the disclosure mayinclude different computer-executable instructions or components havingmore or less functionality than illustrated and described herein.

Aspects of the disclosure transform a general-purpose computer into aspecial-purpose computing device when programmed to execute theinstructions described herein.

The operations illustrated and described herein may be implemented assoftware instructions encoded on a computer-readable medium, in hardwareprogrammed or designed to perform the operations, or both. For example,aspects of the disclosure may be implemented as a system on a chip.

The embodiments illustrated and described herein as well as embodimentsnot specifically described herein but within the scope of aspects of thedisclosure constitute exemplary means for maintaining high availabilityof software application instances, such as virtual machines.

The order of execution or performance of the operations in embodimentsof the disclosure illustrated and described herein is not essential,unless otherwise specified. That is, the operations may be performed inany order, unless otherwise specified, and embodiments of the disclosuremay include additional or fewer operations than those disclosed herein.For example, it is contemplated that executing or performing aparticular operation before, contemporaneously with, or after anotheroperation is within the scope of aspects of the disclosure.

When introducing elements of aspects of the disclosure or theembodiments thereof, the articles “a,” “an,” “the,” and “said” areintended to mean that there are one or more of the elements. The terms“comprising,” “including,” and “having” are intended to be inclusive andmean that there may be additional elements other than the listedelements.

Having described aspects of the disclosure in detail, it will beapparent that modifications and variations are possible withoutdeparting from the scope of aspects of the disclosure as defined in theappended claims. As various changes could be made in the aboveconstructions, products, and methods without departing from the scope ofaspects of the disclosure, it is intended that all matter contained inthe above description and shown in the accompanying drawings shall beinterpreted as illustrative and not in a limiting sense.

What is claimed is:
 1. A system for executing a maintenance operation ona virtual machine (VM), the system comprising: a host computing devicecomprising: a first VM and a second VM; a maintenance applicationinstalled within the first VM; and an optimization framework providingan interface to the maintenance application, wherein the optimizationframework comprises a framework agent and a plurality of frameworkapplication programming interfaces; and an optimization server coupledto the maintenance application through the optimization framework,wherein the optimization server is configured to: select a maintenanceoperation to execute on the second VM; command the maintenanceapplication to execute the maintenance operation on the second VM; andreceive the results of the maintenance operation.
 2. The system of claim1, wherein the optimization server is further configured to register themaintenance application to enable the maintenance application toestablish a trusted communication with the optimization server.
 3. Thesystem of claim 1, wherein the optimization framework includes aframework agent configured to establish a connection between themaintenance application and the optimization server.
 4. The system ofclaim 1, wherein the optimization server causes a profile of the secondVM to be stored before executing the maintenance operation on the secondVM.
 5. The system of claim 1, wherein the optimization server determineswhether the second VM is offline before commanding the maintenanceapplication to execute the maintenance operation on the second VM. 6.The system of claim 5, wherein the optimization server mounts at leastone disk of the second VM to the maintenance application if the secondVM is determined to be offline.
 7. The system of claim 6, wherein themaintenance application executes the maintenance operation by accessingdata from the mounted disk.
 8. The system of claim 1, wherein themaintenance application executes the maintenance operation on the secondVM without installing any component of the maintenance application inthe second VM.
 9. A method of executing a maintenance operation on avirtual machine (VM), the method comprising: accessing a maintenanceapplication installed within a first VM executing on a host computingdevice; registering the maintenance application; selecting, by anoptimization server, a maintenance operation to execute on a second VMexecuting on the host computing device; and commanding, by theoptimization server, the registered maintenance application to executethe maintenance operation on the second VM.
 10. The method of claim 9,further comprising storing a registration key within the maintenanceapplication.
 11. The method of claim 10, further comprising establishinga trusted communication between the maintenance application and theoptimization server using the registration key.
 12. The method of claim9, further comprising generating, by the optimization server, aplurality of administrator configuration settings for the maintenanceapplication, wherein the administrator configuration settings identifysettings to be applied to each maintenance operation executed by themaintenance application.
 13. The method of claim 12, further comprisinggenerating, by the optimization server, a plurality of userconfiguration settings for the maintenance application, wherein the userconfiguration settings identify settings to be applied to themaintenance operation to be executed on the second VM.
 14. The method ofclaim 13, wherein commanding the maintenance application to execute themaintenance operation comprises transmitting a maintenance command,including at least one of (A) the user configuration settings and (B)the administrator configuration settings, to the maintenanceapplication.
 15. A computer-readable storage medium having computerexecutable instructions embodied thereon, wherein, when executed by aprocessor, the computer-executable instructions cause the processor to:instantiate a first virtual machine (VM) and a second VM; install amaintenance application within the first VM; install at least acomponent of an optimization framework within the first VM, wherein nocomponents of the optimization framework are included within the secondVM; receive, from an optimization server, a maintenance commandincluding a maintenance operation to be executed on the second VM;execute the maintenance operation on the second VM using the componentinstalled within the first VM; and transmit the results of themaintenance operation to the optimization server using the componentinstalled within the first VM.
 16. The computer-readable storage mediumof claim 15, wherein the computer executable instructions further causethe processor to determine whether user intervention is requested forthe maintenance operation.
 17. The computer-readable storage medium ofclaim 16, wherein the computer executable instructions further cause theprocessor to implement at least one user selected action on the secondVM if the processor determines that user intervention is requested. 18.The computer-readable storage medium of claim 16, wherein the computerexecutable instructions further cause the processor to implement atleast one action recommended by the maintenance application if theprocessor determines that no user intervention is requested.
 19. Thecomputer-readable storage medium of claim 15, wherein the computerexecutable instructions further cause the processor to restore thesecond VM from a stored profile of the second VM if the processordetermines that the maintenance operation did not complete successfully.20. The computer-readable storage medium of claim 15, wherein thecomputer executable instructions further cause the processor to registerthe maintenance application with the optimization server.
 21. Anoptimization server for improving operation of at least one targetvirtual machine (VM), the optimization server comprising: a userconfiguration module configured to receive at least one userconfiguration setting for a maintenance operation to be executed on atarget VM by a maintenance application; an administrator configurationmodule configured to receive at least one administrator configurationsetting for the maintenance operation; a database configured to storedata associated with the target VM, wherein the data includes the userconfiguration settings and the administrator configuration settings; anda manager module to control an operation of the optimization server andto transmit a maintenance command to the maintenance application,wherein the maintenance command causes the maintenance operation to beexecuted on the target VM, and wherein the maintenance command includesat least one of (A) the user configuration settings and (B) theadministrator configuration settings.
 22. The optimization server ofclaim 21, wherein the manager module is further configured to determinewhether the target VM is offline.
 23. The optimization server of claim22, wherein the target VM includes at least one disk, the optimizationserver further comprising a disk mounting module configured to mounteach disk of the target VM to the maintenance application if the targetVM is offline.
 24. The optimization server of claim 21, wherein themanager module causes the maintenance operation to be executed on thetarget VM by transmitting the maintenance command to the maintenanceapplication.
 25. The optimization server of claim 21, wherein themanager module registers the maintenance application with theoptimization server to enable the maintenance application to establish atrusted communication with the optimization server.
 26. The optimizationserver of claim 21, wherein the target VM is a VM template, theoptimization server causes the maintenance operation to be executed onthe VM template.
 27. The optimization server of claim 21, wherein thetarget VM is one of a plurality of target VMs, the optimization servercauses the maintenance operation to be executed on each of the pluralityof target VMs.